import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';

export default (appInfo: EggAppInfo) => {
  const config = {} as PowerPartial<EggAppConfig>;

  // override config from framework / plugin
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1633145010021_6458';

  // add your egg config in here
  // config.middleware = [];
  // file读取方式
  config.security = {
    csrf: {
      ignoreJSON: true, // 默认为 false，当设置为 true 时，将会放过所有 content-type 为 `application/json` 的请求
    },
  },
  config.bodyParser = {
		formLimit: '30mb',
	    jsonLimit: '30mb',
	    textLimit: '30mb'
	    // 值的大小可以根据自己的需求修改 这里只做演示
	};
    config.multipart = {
      // mode: 'stream',
      mode: 'file',
      // fileModeMatch: /(\/pageTemplate)$/, // /pageTemplate接口使用file模式，其他使用stream模式
      // whitelist: [ '.jpg', '.jpeg', '.png', '.gif', '.webp' ],
      // whitelist: [
      //   // images
      //   '.jpg', '.jpeg', // image/jpeg
      //   '.png', // image/png, image/x-png
      //   '.gif', // image/gif
      //   '.bmp', // image/bmp
      //   '.wbmp', // image/vnd.wap.wbmp
      //   '.webp',
      //   '.tif',
      //   '.psd',
      //   // text
      //   '.svg',
      //   '.js', '.jsx',
      //   '.json',
      //   '.css', '.less',
      //   '.html', '.htm',
      //   '.xml',
      //   // tar
      //   '.zip',
      //   '.gz', '.tgz', '.gzip',
      //   // video
      //   '.mp3',
      //   '.mp4',
      //   '.avi',
      // ],
      // fileSize: '50mb',
      // fieldSize: '1024kb',
    };
  config.security = {
    csrf: {
      enable: false
    },
    domainWhiteList: ['*']
  };
  config.jwt = {
    secret: "lmb"//自定义 token 的加密条件字符串
  };
  config.cors = {
    origin: '*',
    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS'
  };
  // add your special config in here
  const bizConfig = {
    sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
  };
  config.middleware = ['checkRouter'];
  config.redis = {
    client: {
      port: 6379,          // Redis port
      host: '127.0.0.1',   // Redis host
      password: '',
      db: 0,
    },
  }

  // the return config will combines to EggAppConfig
  return {
    ...config,
    ...bizConfig,
  };
};
